diff options
Diffstat (limited to 'app/[lng]/evcp/(evcp)/(master-data)')
10 files changed, 50 insertions, 15 deletions
diff --git a/app/[lng]/evcp/(evcp)/(master-data)/buyer-signature/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/buyer-signature/page.tsx index 96bf783c..dfbd605b 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/buyer-signature/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/buyer-signature/page.tsx @@ -15,7 +15,7 @@ export default async function BuyerSignaturePage(props: { params: Promise<{ lng: <div> <h1 className="text-3xl font-bold">{t('menu.master_data.buyer_signature')}</h1> <p className="text-muted-foreground mt-2"> - 계약서에 자동으로 적용될 삼성중공업 서명을 관리합니다. + {t('menu.master_data.buyer_signaturee_desc')} </p> </div> diff --git a/app/[lng]/evcp/(evcp)/(master-data)/esg-check-list/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/esg-check-list/page.tsx index a573c77b..4575e65b 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/esg-check-list/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/esg-check-list/page.tsx @@ -9,14 +9,18 @@ import { getEsgEvaluations } from "@/lib/esg-check-list/service" import { getEsgEvaluationsSchema } from "@/lib/esg-check-list/validation" import { EsgEvaluationsTable } from "@/lib/esg-check-list/table/esg-table" import { InformationButton } from "@/components/information/information-button" +import { useTranslation } from "@/i18n" interface IndexPageProps { + params: Promise<{lng: string}> searchParams: Promise<SearchParams> } export default async function IndexPage(props: IndexPageProps) { const searchParams = await props.searchParams const search = getEsgEvaluationsSchema.parse(searchParams) + const {lng} = await props.params + const {t} = await useTranslation(lng, 'menu') const validFilters = getValidFilters(search.filters) @@ -35,7 +39,7 @@ export default async function IndexPage(props: IndexPageProps) { <div> <div className="flex items-center gap-2"> <h2 className="text-2xl font-bold tracking-tight"> - ESG 자가진단평가서 항목 관리 + {t('menu.master_data.esg_checklist')} </h2> <InformationButton pagePath="evcp/esg-check-list" /> </div> diff --git a/app/[lng]/evcp/(evcp)/(master-data)/evaluation-check-list/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/evaluation-check-list/page.tsx index ccd6766b..5547b097 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/evaluation-check-list/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/evaluation-check-list/page.tsx @@ -9,10 +9,12 @@ import { Skeleton } from '@/components/ui/skeleton'; import { Suspense } from 'react';
import { type SearchParams } from '@/types/table';
import { InformationButton } from '@/components/information/information-button';
+import { useTranslation } from '@/i18n';
// ----------------------------------------------------------------------------------------------------
/* TYPES */
interface EvaluationCriteriaPageProps {
+ params: Promise<{ lng: string }>
searchParams: Promise<SearchParams>
}
@@ -23,6 +25,8 @@ async function EvaluationCriteriaPage(props: EvaluationCriteriaPageProps) { const searchParams = await props.searchParams;
const search = searchParamsCache.parse(searchParams);
const validFilters = getValidFilters(search.filters);
+ const { lng } = await props.params
+ const { t } = await useTranslation(lng, 'menu')
const promises = Promise.all([
getRegEvalCriteria({
...search,
@@ -37,7 +41,7 @@ async function EvaluationCriteriaPage(props: EvaluationCriteriaPageProps) { <div>
<div className="flex items-center gap-2">
<h2 className="text-2xl font-bold tracking-tight">
- 협력업체 평가기준표 관리
+ {t('menu.master_data.evaluation_checklist')}
</h2>
<InformationButton pagePath="evcp/evaluation-check-list" />
</div>
diff --git a/app/[lng]/evcp/(evcp)/(master-data)/evaluation-target-list/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/evaluation-target-list/page.tsx index 325037d8..b42c2037 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/evaluation-target-list/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/evaluation-target-list/page.tsx @@ -9,6 +9,7 @@ import { getDefaultEvaluationYear, searchParamsEvaluationTargetsCache } from "@/ import { getEvaluationTargets } from "@/lib/evaluation-target-list/service" import { InformationButton } from "@/components/information/information-button" import { EvaluationTargetsTable } from "@/lib/evaluation-target-list/table/evaluation-target-table" +import { useTranslation } from "@/i18n" export const dynamic = 'force-dynamic' export const revalidate = 0 @@ -19,11 +20,14 @@ export const metadata: Metadata = { } interface EvaluationTargetsPageProps { + params: Promise<{ lng: string }> searchParams: Promise<SearchParams> } export default async function EvaluationTargetsPage(props: EvaluationTargetsPageProps) { const searchParams = await props.searchParams + const { lng } = await props.params + const { t } = await useTranslation(lng, 'menu') // ✅ 간소화된 파싱 const search = searchParamsEvaluationTargetsCache.parse(searchParams) @@ -42,7 +46,7 @@ export default async function EvaluationTargetsPage(props: EvaluationTargetsPage <div className="flex items-center justify-between space-y-2"> <div className="flex items-center gap-2"> <h2 className="text-2xl font-bold tracking-tight"> - 협력업체 평가 대상 관리 + {t('menu.master_data.evaluation_target')} </h2> <InformationButton pagePath="evcp/evaluation-target-list" /> <Badge variant="outline" className="text-sm"> diff --git a/app/[lng]/evcp/(evcp)/(master-data)/general-contract-template/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/general-contract-template/page.tsx index 8a652690..c82f6b5a 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/general-contract-template/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/general-contract-template/page.tsx @@ -9,14 +9,18 @@ import { getContractTemplates } from "@/lib/general-contract-template/service" import { searchParamsTemplatesCache } from "@/lib/general-contract-template/validations" import { ContractTemplateTable } from "@/lib/general-contract-template/template/general-contract-template" import { InformationButton } from "@/components/information/information-button" +import { useTranslation } from "@/i18n" interface IndexPageProps { + params: Promise<{lng: string}> searchParams: Promise<SearchParams> } export default async function IndexPage(props: IndexPageProps) { const searchParams = await props.searchParams const search = searchParamsTemplatesCache.parse(searchParams) + const {lng} = await props.params + const {t} = await useTranslation(lng, 'menu') const validFilters = getValidFilters(search.filters) @@ -34,12 +38,12 @@ export default async function IndexPage(props: IndexPageProps) { <div> <div className="flex items-center gap-2"> <h2 className="text-2xl font-bold tracking-tight"> - 일반계약(Contract) 표준양식 관리 + {t('menu.master_data.general_contract_template')} </h2> <InformationButton pagePath="evcp/general-contract-template" /> </div> <p className="text-muted-foreground mt-2"> - 다양한 계약 유형의 표준양식을 관리합니다. LO, FA, PO, CS, EU 등 계약 종류별 템플릿을 등록하고 편집할 수 있습니다. + {t('menu.master_data.general_contract_template_desc')} </p> </div> </div> diff --git a/app/[lng]/evcp/(evcp)/(master-data)/material-groups/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/material-groups/page.tsx index 3d019182..708fac1e 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/material-groups/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/material-groups/page.tsx @@ -15,14 +15,17 @@ import { MaterialGroupTable } from "@/lib/material-groups/table/material-group-t import { InformationButton } from "@/components/information/information-button" import { MaterialGroupSyncButton } from "@/components/material-groups/sync-button" import { searchParamsCache } from "@/lib/material-groups/validations" +import { useTranslation } from "@/i18n" interface MaterialGroupPageProps { + params: Promise<{ lng: string }> searchParams: Promise<SearchParams> } export default async function MaterialGroupPage(props: MaterialGroupPageProps) { const searchParams = await props.searchParams - + const { lng } = await props.params + const { t } = await useTranslation(lng, 'menu') // searchParamsCache를 사용해서 파라미터 파싱 const search = searchParamsCache.parse(searchParams) @@ -43,12 +46,12 @@ export default async function MaterialGroupPage(props: MaterialGroupPageProps) { <div> <div className="flex items-center gap-2"> <h2 className="text-2xl font-bold tracking-tight"> - 자재그룹 + {t('menu.master_data.material_master')} </h2> <InformationButton pagePath="evcp/material-groups" /> </div> <p className="text-muted-foreground"> - MDG로부터 수신된 자재그룹 정보 + {t('menu.master_data.material_master_desc')} </p> </div> <div className="flex items-center gap-2"> diff --git a/app/[lng]/evcp/(evcp)/(master-data)/p-items/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/p-items/page.tsx index 2b907a75..fa0cef19 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/p-items/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/p-items/page.tsx @@ -8,14 +8,17 @@ import { getProcurementItems } from "@/lib/procurement-items/service" import { ProcurementItemsTable } from "@/lib/procurement-items/table/procurement-items-table" import { searchParamsCache } from "@/lib/procurement-items/validations" import { InformationButton } from "@/components/information/information-button" - +import { useTranslation } from "@/i18n" interface IndexPageProps { + params: Promise<{lng: string}> searchParams: Promise<SearchParams> } export default async function IndexPage(props: IndexPageProps) { const searchParams = await props.searchParams const search = searchParamsCache.parse(searchParams) + const {lng} = await props.params + const {t} = await useTranslation(lng, 'menu') const validFilters = getValidFilters(search.filters) @@ -33,12 +36,12 @@ export default async function IndexPage(props: IndexPageProps) { <div> <div className="flex items-center gap-2"> <h2 className="text-2xl font-bold tracking-tight"> - 1회성 품목 관리 + {t('menu.master_data.procurement_items')} </h2> <InformationButton pagePath="evcp/procurement-items" /> </div> <p className="text-muted-foreground"> - 입찰에서 사용하는 1회성 품목을 등록하고 관리합니다. + {t('menu.master_data.procurement_items_desc')} </p> </div> </div> diff --git a/app/[lng]/evcp/(evcp)/(master-data)/payment-conditions/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/payment-conditions/page.tsx index 49724328..ff6d24b2 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/payment-conditions/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/payment-conditions/page.tsx @@ -8,7 +8,9 @@ import { SearchParamsCache } from "@/lib/payment-terms/validations"; import { getPaymentTerms } from "@/lib/payment-terms/service"; import { PaymentTermsTable } from "@/lib/payment-terms/table/payment-terms-table"; import { InformationButton } from "@/components/information/information-button"; +import { useTranslation } from "@/i18n" interface IndexPageProps { + params: Promise<{ lng: string }> searchParams: Promise<SearchParams>; } @@ -16,6 +18,8 @@ export default async function IndexPage(props: IndexPageProps) { const searchParams = await props.searchParams; const search = SearchParamsCache.parse(searchParams); const validFilters = getValidFilters(search.filters); + const {lng} = await props.params + const {t} = await useTranslation(lng, 'menu') const promises = Promise.all([ getPaymentTerms({ @@ -29,7 +33,7 @@ export default async function IndexPage(props: IndexPageProps) { <div className="flex items-center justify-between space-y-2"> <div> <div className="flex items-center gap-2"> - <h2 className="text-2xl font-bold tracking-tight">지급 조건 관리</h2> + <h2 className="text-2xl font-bold tracking-tight">{t('menu.master_data.payment_conditions')}</h2> <InformationButton pagePath="evcp/payment-conditions" /> </div> {/* <p className="text-muted-foreground"> diff --git a/app/[lng]/evcp/(evcp)/(master-data)/pq-criteria/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/pq-criteria/page.tsx index 1a337cc9..e83696ce 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/pq-criteria/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/pq-criteria/page.tsx @@ -7,14 +7,18 @@ import { searchParamsCache } from "@/lib/pq/validations" import { getPQLists } from "@/lib/pq/service"
import { PqListsTable } from "@/lib/pq/table/pq-lists-table"
import { getProjects } from "@/lib/pq/service"
+import { useTranslation } from "@/i18n"
interface ProjectPageProps {
+ params: Promise<{ lng: string }>
searchParams: Promise<SearchParams>
}
export default async function ProjectPage(props: ProjectPageProps) {
const searchParams = await props.searchParams
const search = searchParamsCache.parse(searchParams)
+ const {lng} = await props.params
+ const {t} = await useTranslation(lng, 'menu')
// filters가 없는 경우를 처리
const validFilters = getValidFilters(search.filters)
@@ -33,7 +37,7 @@ export default async function ProjectPage(props: ProjectPageProps) { <div className="flex items-center justify-between">
<div>
<h2 className="text-2xl font-bold tracking-tight">
- PQ 리스트 관리
+ {t('menu.master_data.pq_criteria')}
</h2>
{/* <p className="text-muted-foreground">
협력업체 등록을 위한, 협력업체가 제출할 PQ 항목을: 프로젝트별로 관리할 수 있습니다.
diff --git a/app/[lng]/evcp/(evcp)/(master-data)/vendor-check-list/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/vendor-check-list/page.tsx index 955c95f0..4cc5a9a0 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/vendor-check-list/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/vendor-check-list/page.tsx @@ -9,14 +9,19 @@ import { getGenralEvaluationsSchema } from "@/lib/general-check-list/validation" import { GeneralEvaluationsTable } from "@/lib/general-check-list/table/general-check-list-table" import { getGeneralEvaluations } from "@/lib/general-check-list/service" import { InformationButton } from "@/components/information/information-button" +import { useTranslation } from "@/i18n" + interface IndexPageProps { + params: Promise<{lng: string}> searchParams: Promise<SearchParams> } export default async function IndexPage(props: IndexPageProps) { const searchParams = await props.searchParams const search = getGenralEvaluationsSchema.parse(searchParams) + const { lng } = await props.params + const { t } = await useTranslation(lng, 'menu') const validFilters = getValidFilters(search.filters) @@ -35,7 +40,7 @@ export default async function IndexPage(props: IndexPageProps) { <div> <div className="flex items-center gap-2"> <h2 className="text-2xl font-bold tracking-tight"> - 협력업체 평가자료 문항 관리 + {t('menu.master_data.vendor_checklist')} </h2> <InformationButton pagePath="evcp/vendor-check-list" /> </div> |
